//
//  OrderActivityController.m
//  SDSY
//
//  Created by 蓝布鲁 on 2017/3/22.
//  Copyright © 2017年 蓝布鲁. All rights reserved.
//

#import "OrderActivityController.h"
#import "DOPDropDownMenu.h"
#import "ActivityCell.h"
#import "ActivityModel.h"
#import "ActivityInfoViewController.h"
#import "UserInfoModel.h"

@interface OrderActivityController ()<DOPDropDownMenuDataSource,DOPDropDownMenuDelegate,UITableViewDelegate,UITableViewDataSource>
// 视图
@property (nonatomic,retain)DOPDropDownMenu *menu;
@property (nonatomic,retain)UITableView *tableView;

// 数据
@property (nonatomic,retain)NSArray *collegeArray;
@property (nonatomic,retain)NSArray *activityTypeArray;
@property (nonatomic,retain)NSArray *activityStatusArray;
@property (nonatomic,retain)NSArray *sortArray;
@property (nonatomic,retain)NSMutableArray *dataArray;
@property (nonatomic,assign)NSInteger page;



@end

@implementation OrderActivityController

- (instancetype)init {
    if (self=[super init]) {
        self.title = @"预约活动";
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1.初始化下拉列表
    self.menu = [[DOPDropDownMenu alloc] initWithOrigin:CGPointMake(0, 64) andHeight:44];
    self.menu.delegate = self;
    self.menu.dataSource = self;
    
    // 2.初始化tableView
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.tableFooterView = [[UIView alloc] init];
    // self.tableView.tableHeaderView = self.menu;
    [self.view addSubview:self.tableView];
    
    // 网络获取下拉数据,先本地获取
    [self updateMenuDate];
    
    // 3.网络获取数据
    
    // 下拉刷新
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        // 3.1 获取活动数据
        self.page = 0;
        [self updateActivityDatePage:self.page getCount:6];
    }];
    [self.tableView.mj_header beginRefreshing];
    
    // 上拉加载
    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        // 获取活动数据
        self.page++;
        [self updateActivityDatePage:self.page getCount:6];
    }];
    
    
}

#pragma mark - 网络请求

// 网络获取下拉数据
- (void)updateMenuDate {
    #pragma mark 获取网络数据
    self.collegeArray = COLLAGE_NAME;
    self.activityTypeArray = CLASSIFY_NAME;
    self.activityStatusArray = @[@"全部状态",@"可预约",@"不可预约"];
    self.sortArray = @[@"活动时间降序",@"活动时间升序"];
    [self.menu reloadData];
    [self.menu selectDefalutIndexPath];
    
    // 查看是否有固定的活动类型默认需要选择
    DOPIndexPath *indexpath = [[DOPIndexPath alloc] initWithColumn:1 row:self.activityType];
    [self.menu selectIndexPath:indexpath];
}

// 获取活动数据
-(void)updateActivityDatePage:(NSInteger)page getCount:(NSInteger)count {
    // 判断是否(下拉刷新)
    if (page == 0) {
        // 下拉刷新,则清空数组
        self.dataArray = [[NSMutableArray alloc] init];
    }
    
    // 初始化参数
    NSDictionary *paramters = @{@"activity_college": @(self.college+1), @"activity_type": @(self.activityType+1), @"activity_status": @(self.activityStatus+1), @"sort_type": @(self.sort+1),@"s_id": [UserInfoModel shareInstance].stu_id ,@"page": @(page), @"count": @(count)};

    [[NetworkTool shareInstance] requireMethodType:POSTType URLString: @"SDSY/getActivity" parameters: paramters success:^(NSDictionary *respondDictionary) {
        // 1.储存数据
        for (NSDictionary *dic in respondDictionary[@"Activities"]) {
            ActivityModel *model = [[ActivityModel alloc] initWithDictionary:dic];
            [self.dataArray addObject:model];
        }
        [self.tableView reloadData];
        
        // 2.检查是否正常加载
        if ([respondDictionary[@"Activities"] count] < count) {
            // 没有更多数据
            [self.tableView.mj_footer endRefreshingWithNoMoreData];
        }else {
            // 正常结束刷新
            [self.tableView.mj_footer endRefreshing];
        }
        [self.tableView.mj_header endRefreshing];
    } failure:^(NSError *error) {
        
        [self updateFailed];
    }];
}

// 如果请求失败,HUD显示错误,tableVIew刷新空数据,foot提示没有数据
- (void)updateFailed {
    [SVProgressHUD showfailed];
    [self.tableView.mj_footer endRefreshingWithNoMoreData];
    [self.tableView.mj_header endRefreshing];
    [self.tableView reloadData];
}

#pragma mark DOPDropDownMenuDataSource回调方法
/**
 *  返回 menu 有多少列 ，默认1列
 */
- (NSInteger)numberOfColumnsInMenu:(DOPDropDownMenu *)menu {
    return 4;
}

/**
 *  返回 menu 第column列有多少行
 */
- (NSInteger)menu:(DOPDropDownMenu *)menu numberOfRowsInColumn:(NSInteger)column {
    if (column == 0) {
        // 按学院筛选
        return self.collegeArray.count;
    }else if (column == 1) {
        // 按活动类型筛选
        return self.activityTypeArray.count;
    } else if (column == 2){
        // 按活动状态筛选
        return self.activityStatusArray.count;
    }else {
        // 排序
        return self.sortArray.count;
    }
}

/**
 *  返回 menu 第column列 每行title
 */
- (NSString *)menu:(DOPDropDownMenu *)menu titleForRowAtIndexPath:(DOPIndexPath *)indexPath {
    if (indexPath.column == 0) {
        // 返回学院名
        return self.collegeArray[indexPath.row];
    } else if (indexPath.column == 1) {
        // 返回活动类型名
        return self.activityTypeArray[indexPath.row];
    }else if (indexPath.column == 2) {
        // 返回活动状态
        return self.activityStatusArray[indexPath.row];
    }else {
        // 返回排序名
        return  self.sortArray[indexPath.row];
    }
}
/**
 *  点击代理，点击了第column 第row 或者item项，如果 item >=0
 */
- (void)menu:(DOPDropDownMenu *)menu didSelectRowAtIndexPath:(DOPIndexPath *)indexPath {
    
    if (indexPath.column == 0) {
        // 如果相等,就不需要赋值,不需要下拉刷新,直接返回
        if (self.college == indexPath.row) {
            return;
        }
        // 学院
        self.college = indexPath.row;
    }else if (indexPath.column == 1) {
        // 如果相等,就不需要赋值,不需要下拉刷新,直接返回
        if (self.activityType == indexPath.row) {
            return;
        }
        // 活动类型
        self.activityType = indexPath.row;
    }else if (indexPath.column == 2) {
        // 如果相等,就不需要赋值,不需要下拉刷新,直接返回
        if (self.activityStatus == indexPath.row) {
            return;
        }
        // 活动状态
        self.activityStatus = indexPath.row;
    }else if (indexPath.column == 3) {
        // 如果相等,就不需要赋值,不需要下拉刷新,直接返回
        if (self.sort == indexPath.row) {
            return;
        }
        // 排序
        self.sort = indexPath.row;
    }
    [self.tableView.mj_header beginRefreshing];
}

- (void)menu:(DOPDropDownMenu *)menu willShowAtColumn:(NSInteger)column{
    NSLog(@"willShowAtColumn:%d",column);

    // tableView不能再滚动
    self.tableView.scrollEnabled = false;
}

- (void)menu:(DOPDropDownMenu *)menu willDisappearAtColumn:(NSInteger)column {
    NSLog(@"willDisappearAtColumn:%d",column);

    // tableView可以再次滚动
    self.tableView.scrollEnabled = true;
}

#pragma mark - UITableView代理方法
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return self.menu.height;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return self.menu;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [tableView cellHeightForIndexPath:indexPath model:self.dataArray[indexPath.row] keyPath:@"model" cellClass:[ActivityCell class] contentViewWidth:SCREEN_WIDTH];
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:true];
    // 取出模型
    ActivityModel *model = self.dataArray[indexPath.row];

    // 显示活动详情页
    ActivityInfoViewController *activityInfoViewController = [[ActivityInfoViewController alloc] init];
    activityInfoViewController.activityID = model.activity_id;
    [self.navigationController pushViewController:activityInfoViewController animated:true];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.dataArray count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ActivityCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELLID"];
    if (cell==nil) {
        cell = [[ActivityCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELLID"];

    }
    
    ActivityModel *model = self.dataArray[indexPath.row];

    cell.model = model;
    return cell;
}



@end
